<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>





  
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

  
  <link rel="stylesheet" href="../rurple.css" type="text/css"><title>25. Python sait déjà faire des additions.</title></head><body>
<h2 class="title">25. Python sait déjà faire des additions.</h2>


<p>Dans la leçon précédente, nous avons vu combien il était compliqué
d'essayer d'apprendre à Reeborg comment additionner deux nombres. Dans
cette leçon, nous verrons combien il est facile de faire faire à Python
des additions... et d'autres opérations mathématiques.</p>


<!--==============================-->
<hr width="50%">
<h3 class="section">Tout d'abord</h3>


<p>Selectionnez l'interpréteur Python (Python: Coder et Apprendre), en
cliquant sur le troisième onglet. Votre affichage devrait ressembler à
ce qui suit :</p>


<p><img alt="Interpréteur Python" src="../../images/inter/interpreter.png"></p>


<br>


<p>Ignorez les deux premières lignes de l'affichage pour l'instant. Sur la troisième ligne, il y a l'<i>invite </i>(ou <i>prompt</i>) de Python.</p>

<pre>&gt;&gt;&gt;<br></pre>


<p>Maintenant, voyons si nous pouvons faire additionner deux nombres à
Python plus facilement que Reeborg ne le pouvait. Mettez le pointeur
sur la ligne 3, cliquez pour la sélectionner et tapez "Additionne 8
et 4" suivi de la touche "Entrée". Python va répondre, dans son propre langage, avec ce qui ressemble à des insultes !</p>


<pre>&gt;&gt;&gt;Additionne 8 et<span class="keyword"></span> 4<br>  File <span class="string">"&lt;input&gt;"</span>, line 1<br>    Additionne 8 et 4<br>               ^<br>SyntaxError: invalid syntax<br>&gt;&gt;&gt;<br></pre>




<p>Ainsi, l'interpréteur Python ne comprend pas les commandes écrites en français. Essayons en anglais :</p>

<pre>&gt;&gt;&gt;Add 8 <span class="keyword">and</span> 4<br>  File <span class="string">"&lt;input&gt;"</span>, line 1<br>    Add 8 <span class="keyword">and</span> 4<br>        ^<br>SyntaxError: invalid syntax<br>&gt;&gt;&gt;<br></pre>




<p>Cela ne fonctionne pas non plus, mais vous avez dû remarquer que l'interpréteur reconnaît des mots-clés Python comme <span class="pykeyword">and</span>
puisqu'il les affiche dans une couleur différente de celle du reste du
texte (aussi différente de la couleur que nous avons choisie mais cela
n'a pas d'importance).</p>


<p>Remarquez qu'il vous <u>invite</u> encore une fois à lui donner une
nouvelle entrée. Cette fois, essayez quelque chose de simple comme
taper "8+4" suivi de la touche "Entrée".
Vous devriez voir quelque chose comme ceci à l'affichage :</p>


<pre>&gt;&gt;&gt; 8+4<br>12<br>&gt;&gt;&gt; <br></pre>




<p>Gagné ! Python a additionné les deux nombres immédiatement (ce qui
était si difficile à faire faire à Reeborg). Il vous invite même encore
une fois à lui donner plus d'instructions. Vous pouvez essayer quelque
chose comme ce qui suit (je l'ai copié de l'interpréteur).</p>


<pre>&gt;&gt;&gt; 8+4<br>12<br>&gt;&gt;&gt; 8-4<br>4<br>&gt;&gt;&gt; 8*4<br>32<br>&gt;&gt;&gt; 8/4<br>2<br></pre>




<p>Comme vous le voyez, Python sait additionner, soustraire, multiplier et diviser.</p>


<h3 class="section">Plus de nombres</h3>


<p>Python connaît l'<i>ordre de priorité</i> des opérateurs
mathématiques. C'est ce qui fait que, quand vous avez plusieurs nombres
et opérations mathématiques, vous multipliez et divisez les nombres
d'abord (de gauche à droite), ensuite vous ajoutez et soustrayez, etc.
Ici, quelques exemples donnent sans doute une meilleure explication que
de simples mots :</p>


<pre>&gt;&gt;&gt; 2+3*5<br>17<br>&gt;&gt;&gt; 2+ (3*5)   <span class="comment"># Python ne fait pas attention aux espaces ici</span><br>17<br>&gt;&gt;&gt; (2+3)*5<br>25<br>&gt;&gt;&gt; 2*4/8<br>1<br>&gt;&gt;&gt; 2+1-4<br>-1<br></pre>




<p>Allez-y, essayez quelques exemples de plus vous-même ! Voyez si vous pouvez parvenir à un résultat suprenant.</p>


<!--==============================-->
<hr width="50%">
<h3 class="section">Division surprenante</h3>


<p>Si vous n'avez trouvé aucun résultat inattendu, c'est parce que vous n'avez pas essayé beaucoup d'exemples. Essayez par exemple <tt>7/3</tt>. Comprenez-vous le résultat ? Essayez aussi <tt>1/2</tt>.</p>


<!--==============================-->

<hr width="50%">
<h3 class="section">Division entière<br>
</h3>

<p>Python reconnaît différents types de nombres. Le type le plus simple est celui des nombres <i>entiers</i> (en anglais <i>integer</i>).
Quand Python divise un entier par un autre entier, il laisse tomber le
reste de la division et ne nous donne qu'un nombre entier comme
réponse. Donc, quand nous divisons 7 par 3 il nous donne 2 (le reste
est 1). Pour obtenir le reste de la division, nous utilisons le symbole
<tt>%</tt> :</p>

<pre>&gt;&gt;&gt; 7/3<br>2<br>&gt;&gt;&gt; 7%3<br>1<br>&gt;&gt;&gt; 1/2<br>0<br>&gt;&gt;&gt; 1%2<br>1<br></pre>




<p>Pour obtenir le résultat auquel nous nous attendions normalement, nous devons dire à Python
d'utiliser des nombres réels ou <i>flottants</i> (en anglais <i>floats</i>). Nous faisons cela en ajoutant un point décimal à la fin d'au moins un des nombres.</p>

<p>[NdT : si en français les nombres décimaux (ou réels) se reconnaissent par leur <i>virgule</i> décimale (qui sépare la partie entière de la partie décimale), en anglais (et donc en Python) on utilise un <i>point</i>, comme avec la plupart des calculatrices]  <br></p>

<pre>&gt;&gt;&gt; 1./2<br>0.5<br>&gt;&gt;&gt; 1/2.<br>0.5<br>&gt;&gt;&gt; 1.00000/2<br>0.5<br></pre>




<h3 class="section">Plus d'opérations mathématiques</h3>


<p>Python en sait plus que les simples opérations mathématiques de base. Voici pour vous quelques exemples à essayer de développer.</p>


<pre>&gt;&gt;&gt; 3*3*3*3<br>81<br>&gt;&gt;&gt; 3**4  <span class="comment"># exponentiation (puissance)</span><br>81<br>&gt;&gt;&gt; 7.3 % 3  <span class="comment"># reste, encore une fois</span><br>1.2999999999999998<br></pre>
<p>Ce dernier résultat est <i>presque</i> égal à 1,3 qui est le
résultat que nous pouvions attendre. La différence entre 1,3 et
1,2999999999999998 est minuscule...
Elle vient de la façon dont fonctionnent les ordinateurs quand ils
traitent des fractions décimales. Je vous expliquerai cela dans une
prochaine leçon, quand vous en saurez plus sur la programmation en
général. Notez juste que, en pratique, une si petite différence entre
le résultat "exact" et celui donné par Python (ou tout autre langage
informatique) ne devrait pas avoir d'importance. Notez quand même qu'on
peut faire afficher à Python les résultats d'une manière plus
sensible&nbsp;; essayez ce qui suit&nbsp;:</p>
<pre>&gt;&gt;&gt; <span class="keyword">print</span> 7.3 % 3<br>1.3<br></pre>




<p>Le mot-clé <span class="pykeyword">print</span> commande à Python
de nous montrer le résultat du calcul, et il le fait "intelligemment".
Parfois,
Python fera certains calculs sans afficher le résultat. En utilisant le mot-clé <span class="pykeyword">print</span>, nous pouvons demander à Python d'afficher un résultat qui pourrait ne pas apparaître autrement.</p>


<p>Êtes-vous curieux ? Qu'arrive-t-il si vous mettez une instruction <span class="pykeyword">print</span>
dans un des programmes de Reeborg ?...</p>


<h3 class="section">Grands nombres</h3>




<p>Essayez ce qui suit :</p>


<pre>&gt;&gt;&gt; 2147483647 + 1<br>2147483648L<br></pre>
<p>Regardez bien : remarquez-vous le curieux "L" à la fin de la réponse ?
Il est là pour désigner ce qu'on appelle un entier <i>Long</i>,
c'est-à-dire un entier qui ne peut pas être facilement représenté dans
la mémoire d'un ordinateur. Pour un ordinateur avec ce qu'on appelle
une puce 32-bits, comme celui que j'utilise, et probablement vous
aussi, tous les nombres positifs sont représentés par diverses
combinaisons de 32 "bits", et l'entier le plus grand qui puisse donc
être représenté est <img alt="2^31" src="../../images/inter/2_31.png">-1 = 2147483647.<!--  wxHtml does not support the <sup> tag  -->
Tout entier plus grand que cela a besoin que Python (ou tout autre
langage informatique)&nbsp; utilise une technique avancée pour
effectuer des opérations mathématiques sur ces nombres. Cela ralentit
les calculs ; Python nous rappelle cela en marquant la lettre L à la
fin. À moins que vous n'en ayez vraiment besoin, évitez d'utiliser des
nombres extrêmement grands&nbsp;!</p>
<!--==============================-->


<hr width="50%">
<h3 class="section">1,000 n'est pas un simple nombre</h3>
<p>Essayez ce qui suit&nbsp;:</p>
<pre>&gt;&gt;&gt; 1,000<br>(1, 0)<br>&gt;&gt;&gt; 1,000,000,000<br>(1, 0, 0, 0)<br></pre>


<p>Que se passe-t-il ? Tout ce que je vous dirai pour l'instant, c'est
que vous ne devez pas mettre de virgules dans les nombres pour séparer
les milliers, comme cela se fait dans beaucoup de pays anglophones.</p>
<p>[NdT : Rappelez-vous que vous devrez remplacer la virgule décimale
que nous utilisons en français par un point pour séparer la partie
entière de la partie décimale d'un nombre. Ne séparez pas par contre
les milliers, millions et milliards.]<br></p>
<p>Nous verrons plus tard ce que signifient les virgules pour Python.
Entre temps, nous pouvons voir ce que les virgules signifient quand
nous les mettons dans une instruction <span class="pykeyword">print</span>&nbsp;:</p>
<pre>&gt;&gt;&gt; <span class="keyword">print</span> 5,4<br>5 4<br>&gt;&gt;&gt; <span class="keyword">print</span> 5,              4<br>5 4<br></pre>




<p>Python considère que la virgule entre les deux nombres ci-dessus
veut dire "mettre une seule espace entre les deux nombres (et ignorer
toute autre espace en plus) au moment de les imprimer.</p>


<!--==============================-->
<hr width="50%">
<h3 class="section">Notation scientifique </h3>
<p>La notation scientifique vous est peut-être familière&nbsp;:</p>
<p><img alt="scientific notation" src="../../images/inter/sci_not.png"></p>


<p>Si c'est le cas, vous savez que cette notation nous permet d'écrire
des nombres extrêmement petits ou extrêmement grands d'une manière très
commode. [<small>Si vous ne connaissez pas la notation scientifique,
vous pouvez sauter cette section puisque nous ne l'utiliserons pas dans
la suite.</small>] Python connaît également la notation scientifique mais il utilise la lettre E (ou e) pour représenter <tt>x 10</tt></p>



<pre>&gt;&gt;&gt; 2e3<br>2000.0<br>&gt;&gt;&gt; 2.5E-1<br>0.25<br></pre>


<p>Essayez !</p>


<!--==============================-->
<hr width="50%">
<h3 class="section">Autres types de nombres<br></h3>


<p>Python sait aussi manipuler les <i>nombres complexes</i> ainsi que les nombres en notations <i>octale</i> (base 8) et <i>hexadécimale</i>
(base 16). Ne vous inquiétez pas si vous ne savez pas ce que c'est. Les
seuls que nous aurons besoin d'utiliser sont les nombres hexadécimaux
et nous donnerons des explications sur eux plus tard.</p>



<!--==============================-->
<hr width="50%">
<h3 class="section">Comparer des nombres</h3>
<p>Python sait comparer des nombres et décider si l'un est <i>plus petit que</i> (<tt>&lt;</tt>) l'autre, s'il est <i>plus grand que</i>

(<tt>&gt;</tt>) l'autre, s'ils sont <i>égaux</i> (<tt>==</tt>) ou s'ils ne sont <i>pas égaux</i> (<tt>!=</tt>).</p>


<p>[NdT : Python répond par <tt>True</tt> si c'est <i>vrai</i> ou <tt>False</tt> si c'est <i>faux</i>]</p>
<pre>&gt;&gt;&gt; 1&lt;2<br>True<br>&gt;&gt;&gt; 3&lt;2<br>False<br>&gt;&gt;&gt; 1&gt;2<br>False<br>&gt;&gt;&gt; 3&gt;2<br>True<br>&gt;&gt;&gt; 2==2<br>True<br>&gt;&gt;&gt; 3==2<br>False<br>&gt;&gt;&gt; 2!=2<br>False<br>&gt;&gt;&gt; 3!=2<br>True<br></pre>




<p>Essayez ! Notez bien l'utilisation de deux signes égal quand nous
voulons tester si deux nombres sont égaux. Si vous utilisez un seul
signe égal, Python se plaindra à sa façon [Il y a trois autres
opérateurs de comparaison : <tt>&lt;&gt;, &lt;=, &gt;=</tt>. Vous pouvez les essayer et deviner ce qu'ils peuvent signifier].</p>


<center><a href="../intro/24-adding.htm"><img alt="précédent" src="../../images/previous.png">Apprendre à Reeborg à faire des additions</a> - <a href="../lessons_toc.htm"><img alt="début" src="../../images/home.png"></a>
- <a href="26-interpreter2.htm">Interpréter les mots-clés Python.<img alt="suivant" src="../../images/next.png"></a></center>
</body></html>